#ifndef __INCutilsh
#define __INCutilsh
#include <string>
#include <vector>
#include <template.h>
#include <posix.h>
#include <type.h>

namespace utils
{
    std::string& replace(std::string& str, const std::string& oldSub, const std::string& newSub);
    std::string& trim(std::string& s, const std::string& trim_chars);
    std::string& ltrim(std::string& s, const std::string& trim_chars);
    std::string& rtrim(std::string& s, const std::string& trim_chars);
    std::string& trim(std::string& s);
    std::string& ltrim(std::string& s);
    std::string& rtrim(std::string& s);
    std::vector<std::string> split(const std::string& str, const std::string& delimiter);
    std::vector<std::string> split(const std::string& str);
    std::string byteToString(const char* s, size_t size);
    std::string byteToString(const std::string& str);
    std::string byteToString(const std::vector<BYTE>& data);
    bool stricmp(const std::string& s1, const std::string& s2);
    STATUS mkdirPath(const std::string& path);
EXTERN_C_BEGIN
    uint64_t GetCurrentMillisecs();
    bool stricmp(const char *s1, const char *s2);
    bool localtime_rs(struct tm* const _Tm,time_t const* const _Time);
    void taskDelay(double seconds);
EXTERN_C_END
}; // namespace utils
#endif